package Exer5;

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.InetSocketAddress;
import java.net.Socket;

/*
 *  现有一个Triangle（三角形）类
 *  服务器用于接收客户端传来的Triangle对象，计算三角形面积，将计算结果传给客户端。
 *  基本要求：使用Socket类和ServerSocket类实现单线程对象的发送与接收。
 *  实现计算结果的发送与接收。可以不使用界面。
 *  选做内容：
	实现多线程服务器和多线程客户端：
	服务器可以同时连接若干客户端；
	每个客户端接收字符串和发送Triangle对象是两个独立的线程。
 */

/**
 * 客户端类，实现计算结果的发送
 * @see #Server
 * @date 2019年11月20日 17:42:51
 */
public class Client {
	
	Socket mySocket = null;
	DataInputStream in = null;
	DataOutputStream out = null;
	
	public Client() {
		mySocket = new Socket();
	}
	
	public boolean isLink() {
		/**
		 * 判断是否连接服务器成功
		 * @return 连接状态
		 * @exception java.io.IOException
		 * @date 2019年11月20日 17:37:54
		 */
		boolean status = false;	
		
		InetSocketAddress socketAddress 
					= new InetSocketAddress("127.0.0.1", 6660);	// 使用题目默认的IP和端口
		
		try {
			mySocket.connect(socketAddress);
			in = new DataInputStream(mySocket.getInputStream());
			out = new DataOutputStream(mySocket.getOutputStream());
			System.out.println("连接成功");
			status = true;
			
		} catch (IOException e) {
			// TODO: handle exception
			System.out.println("连接失败");
		}
		
		return status;
	}
	
	public double Interact(String valA, String valB, String valC) {
		/**
		 * @param vaA, valB, valC 用户输入的三角形三边
		 * @return 计算的三角形面积
		 * @exception java.io.IOException
		 * @date 2019年11月20日 17:38:52
		 */
		double area = 0;
		
		try {
			// 发送边长数据
			double a = Double.valueOf(valA);
			out.writeDouble(a);
			double b = Double.valueOf(valB);
			out.writeDouble(b);
			double c = Double.valueOf(valC);
			out.writeDouble(c);
			// 接受面积数据
			area = in.readDouble();
		} catch (IOException e) {
			// TODO: handle exception
			e.printStackTrace();
		}
		
		return area;
	}
}
	